import Vue from 'vue';
 
// 创建 Vue 实例作为事件总线
const EventBus = new Vue();
 
/**
 * 封装事件触发方法
 * @param {string} eventName - 事件名称
 * @param {any} payload - 传递的数据
 */
export const emitEvent = (eventName, payload) => {
  try {
    EventBus.$emit(eventName, payload);
  } catch (error) {
    // 错误捕获
    console.error(`[EventBus Error] 触发事件 ${eventName} 失败:`, error);
  }
};
 
/**
 * 封装事件监听方法
 * @param {string} eventName - 事件名称
 * @param {Function} callback - 回调函数
 */
export const listenEvent = (eventName, callback) => {
  EventBus.$on(eventName, callback);
};
 
/**
 * 移除事件监听
 * @param {string} eventName - 事件名称
 * @param {Function} [callback] - 可选，指定要移除的回调函数
 */
export const removeEvent = (eventName, callback) => {
  if (callback) {
    EventBus.$off(eventName, callback);
  } else {
    EventBus.$off(eventName);
  }
};
 
// 挂载到 Vue 原型（可选）
EventBus.install = (Vue) => {
  Vue.prototype.$eventBus = EventBus;
};
 
export default EventBus;